package com.children.growth.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 绘画作品实体类
 * 
 * @author children
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("drawing")
public class Drawing {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 标题
     */
    @TableField("title")
    private String title;

    /**
     * 描述
     */
    @TableField("description")
    private String description;

    /**
     * 图片文件路径
     */
    @TableField("image_path")
    private String imagePath;

    /**
     * 缩略图路径
     */
    @TableField("thumbnail_path")
    private String thumbnailPath;

    /**
     * 画布数据（JSON格式）
     */
    @TableField("canvas_data")
    private String canvasData;

    /**
     * 绘画类型：1-自由绘画，2-AI辅助，3-模板创作
     */
    @TableField("drawing_type")
    private Integer drawingType;

    /**
     * 使用的工具：1-画笔，2-橡皮擦，3-形状，4-文字，5-贴纸
     */
    @TableField("tools_used")
    private String toolsUsed;

    /**
     * 颜色使用情况（JSON格式）
     */
    @TableField("color_usage")
    private String colorUsage;

    /**
     * 绘画时长（分钟）
     */
    @TableField("drawing_duration")
    private Integer drawingDuration;

    /**
     * 文件大小（字节）
     */
    @TableField("file_size")
    private Long fileSize;

    /**
     * 情绪分析结果（JSON格式）
     */
    @TableField("emotion_analysis")
    private String emotionAnalysis;

    /**
     * 标签，逗号分隔
     */
    @TableField("tags")
    private String tags;

    /**
     * 是否公开：0-私密，1-公开
     */
    @TableField("is_public")
    private Integer isPublic;

    /**
     * 点赞数
     */
    @TableField("like_count")
    private Integer likeCount;

    /**
     * 评论数
     */
    @TableField("comment_count")
    private Integer commentCount;

    /**
     * 状态：0-草稿，1-已完成，2-已删除
     */
    @TableField("status")
    private Integer status;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 逻辑删除标识：0-未删除，1-已删除
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
} 